home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Tools / ispell-3.1 / Contributors next >
Text File  |  1995-07-13  |  16KB  |  465 lines

  1. Ispell has a long and convoluted history.  I have tried to track down
  2. as much as possible about it and condense it below.
  3.  
  4. THE DEVELOPMENT OF SPELL-CHECKING AND THE FIRST ISPELL
  5.  
  6. The following background information on spelling checkers in general,
  7. and ispell in particular, was provided to me by Les Earnest
  8. (les@dec-lite.stanford.edu):
  9.  
  10. > The earliest spelling checker (of sorts) of which I am aware was in a
  11. > program that attempted to automatically receive human-keyed Morse
  12. > code, which can be ambiguous because of the variable timing between
  13. > dots, dashes, intercharacter pauses, and interword pauses.  This
  14. > program didn't use a full dictionary; instead, used a table of
  15. > digraphs (two-letter sequences) that occur in English and barred
  16. > improper letter sequences.  This program was written by someone at MIT
  17. > Lincoln Lab around 1959 and, I think, ran on the TX-2 computer there.
  18. > Unfortunately, I don't remember his name.  I might still have the
  19. > paper he wrote in my files but it would take a major search to find it
  20. > and I might not succeed.
  21. >
  22. > A program that I wrote in 1961 to read cursive writing contained a
  23. > real spelling checker, using the 10,000 most common English words.
  24. > It is reported in:
  25. >   L. Earnest, "Machine Recognition of Cursive Writing," Information
  26. >   Processing 62, (Proc. IFIP Congress 1962, Munich), North-Holland,
  27. >   Amsterdam, 1963.
  28. > and
  29. >   N. Lindgren, ``Machine Recognition of Human Language, Part III -
  30. >   Cursive Script Recognition'', IEEE Spectrum, May 1965.
  31. >
  32. > I brought that dictionary to Stanford and got a PhD student to write
  33. > a spelling checker for text in Lisp running on our PDP-6 computer at
  34. > the Stanford Artificial Intelligence Lab around 1967.
  35. > Unfortunately, I do not remember which student it was; it could have
  36. > been Gil Falk.  It was a rather simple program (certainly much
  37. > simpler than the earlier cursive writing program) and I didn't think
  38. > of it as a significant development at the time.
  39. >
  40. > [Later], I got another PhD student, Ralph Gorin, to do a better and
  41. > faster spelling checker sometime in the early '70s, still using my
  42. > old dictionary.  Ralph later wrote an article about it in CACM.  I
  43. > believe that he later augmented the dictionary.
  44.  
  45. [note: Ralph has since informed me that he wrote no such article.  The
  46. program was called SPELL and was written in 1971.  Ralph provided me
  47. with a reference to "Computer Programs for Spelling Correction", by
  48. James L. Peterson, Springer-Verlag, Berlin, 1980, No. 96 in the series
  49. "Lecture Notes in Computer Science."  This book states that Ralph's
  50. SPELL program, which was the direct ancestor of ispell, was the first
  51. computer program written for checking the spelling of text documents.
  52. The book is also a good source of references on spelling programs.]
  53.  
  54. > ...
  55. >    
  56. > [Ispell] was originally written in PDP-10 assembly language and ran
  57. > under the WAITS operating system, which is similar to TOPS-10 but existed
  58. > only on SAIL (a dual processor KA10/PDP-6 system).  It was and is called
  59. > SPELL on that machine.  It later was modified to run under Tenex and
  60. > TOPS-20.
  61.  
  62. [Ralph mentions that SPELL was also ported to MIT's ITS and TOPS-10.]
  63.    
  64. The Tenex version of ispell was later revised by W. E. Matson (1974),
  65. and Bill Ackerman (1978).  Bill has provided the following information:
  66.  
  67. > I came across the SPELL program in 1978 on ITS.  It was a port from
  68. > Stanford, and had the names Ralph Gorin (approximately 1971) and
  69. > Wayne Matson (1974) associated with it.  I did 3 things to it:
  70. >
  71. >    Rewrote it as a native program for ITS, and, shortly thereafter,
  72. >       TOPS-20.  (I never did anything for TOPS-10, and am not aware
  73. >       that it ever ran on TOPS-10, though it may have.)
  74. >
  75. >    Replaced the heuristics for suffix removal, which I found unreliable
  76. >       and unsatisfactory, with an algorithm that was driven by specific
  77. >       suffix flags in the dictionary.  This way, the dictionary would have
  78. >       complete control over what words were legal, and there would be no
  79. >       spurious hits.
  80. >
  81. >    Apparently most importantly, though I had no idea at time, gave it
  82. >       the name "ISPELL", for "ITS version of spell", since I didn't
  83. >       consider myself authorized to throw away an existing program
  84. >       and overwrite it with a new one under the same name.
  85. >
  86. > I have not followed the history of the program since then, and do not know
  87. > if it still uses the "suffix flags" in its dictionary.  But if it does,
  88. > I introduced them.  The Ispell algorithm that uses those flags to make
  89. > accurate decisions about the legality of words was documented in great
  90. > detail in James Peterson's Springer-Verlag book.  (He spent a semester
  91. > at MIT while working on the book, and I provided him with a lot of
  92. > information and documentation at that time.)
  93. >
  94. >                            Bill Ackerman
  95. >                            wba@apollo.hp.com
  96.  
  97. Michael Adler adds:
  98.  
  99. > I did work on ispell in 1982.  Actually, I stole the ispell
  100. > dictionary and suffix compression algorithm and wrote a spelling
  101. > checker for CP/M in 8080 assembler that I very creatively called "SPELL."
  102. > By sorting the dictionary alphabetically and using a difference encoding
  103. > I managed to pack the entire dictionary that Bill was using in about
  104. > 56Kb.  The CP/M program read a document, sorted all the words alphabetically
  105. > and then checked them.  It then reread the document and compared words as
  106. > it found them against the in memory, sorted and checked words.  SPELL was
  107. > around in the public domain on CP/M.
  108. >
  109. > I was in high school at the time and talked to Bill only over email.
  110. > We wound up in the same compiler group at Apollo in the late 80's by
  111. > coincidence.
  112.  
  113. DEVELOPMENT OF THE C/UNIX VERSION OF ISPELL
  114.  
  115. In 1983, Pace Willisson (pace@prep.ai.mit.edu) wrote a C/Unix version
  116. from scratch, based on the ispell documentation.
  117.  
  118. In 1987, Walt Buehring revised and enhanced ispell, and posted it to the
  119. Usenet along with a dictionary.  In addition, Walt wrote the first version
  120. of "ispell.el", the emacs interface.
  121.  
  122. Geoff Kuenning (geoff@ITcorp.com, that's me, and by the way I
  123. pronounce it "Kenning"; the "u" is silent) picked up this version,
  124. fixed some bugs, and added further enhancements, all of which made me
  125. the de-facto ispell maintainer for the net.  I also put quite a bit of
  126. work into improving the quality of the dictionaries.  In 1987 I began
  127. work on the "munchlist" script, which I originally intended to be used
  128. to add flags to personal dictionary entries.  At the same time I was
  129. studying German, and wanted to use ispell to check the papers I was
  130. writing for that class.  After thinking about it for some time, I
  131. realized that the suffix flags could be table-driven, which would both
  132. add flexibility and would get rid of certain difficult-to-find bugs.
  133. In 1988 I rewrote major portions of the code to do this, resulting in
  134. the first multi-lingual version.  Ole Bjoern Hessen (obh@ifi.uio.no)
  135. in Norway alpha-tested this version and provided several important
  136. enhancements.
  137.  
  138. Bob Devine (vianet!devine) provided two larger dictionaries (which
  139. became the basis for english.1 and english.2) to me for inclusion
  140. with subsequent releases.
  141.  
  142. Ashwin Ram (ram@cs.yale.edu) made substantial enhancements to Walt
  143. Buehring's emacs interface, and provided them to me for inclusion
  144. with an earlier release.
  145.  
  146. The emacs interface was then completely overhauled by Ken Stevens
  147. (stevens@hplabs.hp.com), who also beta-tested the software and
  148. without whom this posting would not have been possible.  If there's a
  149. feature in the emacs interface that you like, you probably have Ken to
  150. thank for it.  His efforts have been tireless for many years.
  151.  
  152. Martin Boyer made major contributions to the munchlist script,
  153. including producing a version that runs under perl (see
  154. languages/Where for instructions on how to get that version).
  155. Philippe-Andre Prindeville provided xspell (a Motif-based X
  156. interface), and Moritz Willers provided a NeXTStep interface.
  157.  
  158. DEVELOPMENT AND DEATH OF ISPELL 4.0
  159.  
  160. Meanwhile, and unbeknownst to me, Pace Willisson was working on his
  161. own improvements to ispell.  He focused primarily on dictionary size
  162. and startup time.  His solution was a dictionary compression algorithm
  163. that detected and encoded frequent letter pairs.  This also reduced
  164. the time needed to read it in.  Pace also changed some internal data
  165. structures to improve startup time.  Pace and I eventually discovered
  166. each other's efforts, and discussed re-merging our changes, but we
  167. decided that there would be too much work involved.  This was partly
  168. because I was close to a release and didn't want to delay it with an
  169. extensive and error-prone merge.
  170.  
  171. In late 1992 (if my memory serves correctly), Richard Stallman
  172. contacted me, asking for permission to distribute ispell as part of
  173. the GNU suite.  I responded that he was welcome to distribute it, but
  174. that I was not willing to place my software under the Gnu Public
  175. License.  Through a misunderstanding, neither of us considered the
  176. possibility of finding a compromise license that both could live with.
  177. So Richard started a search for an alternate version, and found Pace
  178. working right in his back yard.
  179.  
  180. I have been told that when FSF first learned of Pace's version, they
  181. again considered using International Ispell instead because it was
  182. both more popular and more capable, but this idea was rejected due to
  183. the license misunderstanding.  Instead, FSF enhanced Pace's version
  184. somewhat and called it ispell 4.0, apparently in the hopes that by
  185. numbering the version higher, it would become the standard.
  186.  
  187. When ispell 4.0 was released, much confusion ensued.  Many ispell
  188. users innocently "upgraded" to 4.0 and then screamed when they could
  189. not find features to which they had grown accustomed.  Europeans in
  190. general were angered by the apparent provincialism shown by the
  191. "dropping" of international support.  I found myself inundated with
  192. questions about a version I had never heard of or seen.
  193.  
  194. One of the earliest and most common suggestions was that FSF should
  195. rename their version "gispell".  This had a lot of precedent, both in
  196. the naming of other FSF utilities and in the then-recent change of the
  197. suffix used by gzip from ".z" to ".gz".  Unfortunately, the FSF
  198. refused to do this.  I may have inadvertently contributed to this
  199. refusal with a Usenet posting in which I tried to clarify what had
  200. happened, pointing out that the FSF version was more recently related
  201. to Pace's than my own.  This may have been seen as an acknowledgment
  202. that FSF should have the rights to the name "ispell," and that I
  203. should rename my version.
  204.  
  205. A flame war arose, and I decided that the only way to solve the
  206. problem was to rename my version to eliminate the confusion.  However,
  207. at about the same time Richard Stallman and I began negotiating via
  208. e-mail.  We itemized and clarified his objections to my license, and I
  209. learned from a third party that FSF is willing to distribute software
  210. that falls under the University of California license (also known as
  211. the Berkeley license).  Richard and I agreed that if I changed my
  212. license to be a paraphrase of the UC license, FSF would be willing to
  213. distribute my version with no changes.  Since then, ispell 4.0 has
  214. been dropped by FSF and has pretty well disappeared from the net,
  215. leaving 3.1 as the version of choice for nearly everyone.
  216.  
  217. OTHER CONTRIBUTORS
  218.  
  219. Many other enhancements and bug fixes were provided by the numerous
  220. people listed below.  Do not assume, because I omit mention of their
  221. specific contributions, that these persons were any less instrumental
  222. in creating the version of ispell that you see before you.  Every one
  223. of them made a significant contribution, and it is only a lack of
  224. space that prevents me from detailing these contributions.  This
  225. version of ispell is truly a cooperative effort, and it would not
  226. exist without the help of the generous souls listed above and below.
  227.  
  228. A full list of contributors, including those mentioned above, follows.  (I
  229. think I have listed everyone, but if you contributed and aren't listed,
  230. let me know and I'll correct it):
  231.  
  232.     Ivar Aavatsmark
  233.     Per Abrahamsen
  234.     Robert Abramovitz
  235.     Bill Ackerman
  236.     Michael Adler
  237.     Rohit Aggarwal
  238.     Jose Joao Almeida
  239.     Jerry Anders
  240.     Boris Aronov
  241.     Yves Arrouye
  242.     Michael C. B. Ashley
  243.     Bertil Askelid
  244.     Eric Backus
  245.     Isaac Balbin
  246.     Neal Becker
  247.     Tony Bennett
  248.     R. Bernstein
  249.     Jim Berry
  250.     Peter A. Bigot
  251.     E. Jay Berkenbilt
  252.     Benno Blumenthal
  253.     Uwe Bonnes
  254.     Marc Boucher
  255.     Martin Boyer
  256.     Ethan Bradford
  257.     Nicolas Brouard
  258.     Peter Bruells
  259.     Ferd Brundick
  260.     Jack Bryans
  261.     Walt Buehring
  262.     Richard Caley
  263.     John D. Campbell
  264.     Keith Cantrell
  265.     John Capo
  266.     Bill Carpenter
  267.     Michael W. Chang
  268.     Wei-Jou Chen
  269.     Peter Chubb
  270.     Stewart Clamen
  271.     Henri Cohen
  272.     Ken Cox
  273.     Robert Crowe
  274.     Damian Cugley
  275.     Ian Dall
  276.     Kevin Dalley
  277.     David Dalton
  278.     Neal Dalton
  279.     Hugh Daniel
  280.     Mark Davies
  281.     Frederic Devernay
  282.     Bob Devine
  283.     Detlev Droege
  284.     Steve Dum
  285.     Alexander Durner
  286.     Jiri Dvorak
  287.     Les Earnest
  288.     David Edelsohn
  289.     Jeff Edmonds
  290.     Eric Eide
  291.     Orjan Ekeberg
  292.     Kevin Ellwood
  293.     Michael Ernst
  294.     L. Van Eycken
  295.     Rik Faith
  296.     Ralf Fassel
  297.     George Ferguson
  298.     Jeff Finger
  299.     Werner Fink
  300.     John Fitch
  301.     Peter Flatau
  302.     Ralph. E. Gorin
  303.     Amos A. Gouaux
  304.     Michael Gschwind
  305.     Bhusan Gupta
  306.     Michael A. Guravage
  307.     Chris Hadley
  308.     Mark Hanning-Lee
  309.     John Heidemann
  310.     Arne Helme
  311.     Ole Bjoern Hessen
  312.     Denis Howe
  313.     Joe Huber
  314.     Brian Hunt
  315.     imt3b2!imtsft (true name unknown)
  316.     Lester Ingber
  317.     Nick Ing-Simmons
  318.     Richard L. Jackson, Jr.
  319.     Michal Jaegermann
  320.     John Jendro
  321.     Bob Jewett
  322.     Trevor Jim
  323.     Gary Johnson
  324.     Gjalt de Jong
  325.     Don Kark
  326.     Dan Karron
  327.     Brendan Kehoe
  328.     Steve Kelem
  329.     Vivek Khera
  330.     Axel Kielhorn
  331.     Masahiro Kitagawa
  332.     Peter Knaggs
  333.     Don Knuth
  334.     Jim Knutson
  335.     Heinz Knutzen
  336.     Fred Korz
  337.     Sebastian Kremer
  338.     Geoff Kuenning
  339.     Ralf Lammers
  340.     Markus Lautenbacher
  341.     Jack Lawler
  342.     Cherie N. Lawrence
  343.     Charles Levert
  344.     Doug Lind
  345.     Michael N. Lipp
  346.     Ernst Lippe
  347.     Richard Lloyd
  348.     John Lu
  349.     Dean Luick
  350.     Ian MacPhedran
  351.     Martin Maechler
  352.     Ross Maloney
  353.     Albrecht Melan
  354.     Lee Melvin
  355.     Evan Marcus
  356.     Simon Marshall
  357.     Dave Mason
  358.     W. E. Matson
  359.     Meinhard E. Mayer
  360.     Rob McMahon
  361.     Bob McQueer
  362.     Dean Messing
  363.     Chris Metcalf
  364.     Hal Miller
  365.     N.O. Monaghan
  366.     Chris Moore
  367.     Bernd Mueller
  368.     Ulrich Mueller
  369.     Guido Muesch
  370.     Peter Mutsaers
  371.     Erik Toubro Nielsen
  372.     Gaute Nessan
  373.     Keith Neufeld
  374.     Paul Nevai
  375.     David Neves
  376.     Mike Ogush
  377.     Thorstein Ohl
  378.     Piet van Oostrum
  379.     Joe Orost
  380.     Pham Dinh-Tuan
  381.     Gildas Perrot
  382.     Francois Pinard
  383.     Israel Pinkas
  384.     Paul Placeway
  385.     Mick Pont
  386.     Philippe-Andre Prindeville
  387.     Gary Puckering
  388.     Philippe Queinnec
  389.     Ashwin Ram
  390.     Bill Randle
  391.     Christopher Rath
  392.     Joachim Reinert
  393.     Rob Riepel
  394.     Marc Ries
  395.     Loren J. Rittle
  396.     Germic Robert
  397.     Philippe Robert
  398.     Doug Roberts
  399.     Kevin Rodgers
  400.     Hagen Ross
  401.     Arie Rudich
  402.     Bruno Salvy
  403.     Rich Salz
  404.     Julio Sanchez
  405.     Paul A. Sand
  406.     Ken Scales
  407.     Bart Schaefer
  408.     Greg Schaffer
  409.     Harald Schlangmann
  410.     Joachim Schrod
  411.     Vernon Schryver
  412.     Martin Schulz
  413.     Gregory Neil Shapiro
  414.     Guy Shaw
  415.     David Shepherd
  416.     Tom Shott
  417.     Joel Shprentz
  418.     Duncan Sinclair
  419.     Vivek P. Singhal
  420.     Klaus Singvogel
  421.     George M. Sipe
  422.     David M. Smith
  423.     Perry Smith
  424.     Luis Soltero
  425.     David Spuler
  426.     Richard Stallman
  427.     Kevin B. Stanton
  428.     Kjartan Stefansson
  429.     Ken Stevens
  430.     Andreas Stolcke
  431.     Thos Sumner
  432.     Bob Sutterfield
  433.     Stefan Taxhet
  434.     Gruppe Thi
  435.     Thomas Tornblom
  436.     Bill Triggs
  437.     uddeborg@carmen.se
  438.     Marc Ullman
  439.     Koaunghi Un
  440.     Arjan de Vet
  441.     Andrew Vignaux
  442.     Christoph Vogelsang
  443.     Jochen Voss
  444.     Peter Watkins
  445.     Gray Watson
  446.     Patrick Weemeeuw
  447.     Petri Wessman
  448.     Michael Wester
  449.     Peter Whaite
  450.     Jon L. White
  451.     Johan Widen
  452.     Fredrik Wilhelmsen
  453.     Moritz Willers
  454.     Pace Willisson
  455.     Joerg Winckler
  456.     Bill Wohler
  457.     Michael J. Wolski
  458.     James Woods
  459.     Frank Wuebbeling
  460.     Avishai Yacobi
  461.     Ken Yap
  462.     Benny Yih
  463.     Jamie Zawinski
  464.     Christos S. Zoulas
  465.